Frequently Asked Questions
General FAQs
How do I figure out if my contract has been decoded?
How do I figure out if my contract has been decoded?
- Pending
- Approved/Rejected*

I see data on Dune but it doesn't match or is missing what I expected to see
I see data on Dune but it doesn't match or is missing what I expected to see
How do I submit contract information manually?
How do I submit contract information manually?
How do I submit a proxy contract?
How do I submit a proxy contract?
DelegateCall
function.If we did monitor the implementation contract’s address directly, we would miss out on any event logs in its logic since these are actually fired by the caller (the Proxy in this case) when calling a function through DelegateCall
.
How do I submit Diamond Proxy contracts?
How do I submit Diamond Proxy contracts?
My submission got rejected, why?
My submission got rejected, why?


Why am I missing historical data for my contract?
Why am I missing historical data for my contract?
I'm waiting for my data to fully decode. What can I do in the meantime?
I'm waiting for my data to fully decode. What can I do in the meantime?
Duplicate Data & Namespace Issues
My contracts are being decoded under multiple folders/namespaces, causing duplicate records. How do I fix this?
My contracts are being decoded under multiple folders/namespaces, causing duplicate records. How do I fix this?
- Identify the duplicate submissions in your contracts list
- Choose which namespace to keep (e.g., LiFiDiamond_v2 vs LiFiDiamond)
- Resubmit the contract and select “Rename a contract” as the reason for resubmission
- Contact Dune support via Slack (For Enterprise Customers), Telegram (Paid Customers), Discord, or email (support@dune.com) to remove the duplicate namespace
- Check existing decoded contracts before submitting
- Use consistent naming conventions across your team
- Document which contracts are already decoded
Can I move contracts from one namespace to another without losing data?
Can I move contracts from one namespace to another without losing data?
- Resubmit under the correct namespace
- Wait for new decoding to complete
- Migrate your queries to use the new tables
- Submit a request to Dune support via Slack (For Enterprise Customers), Telegram (Paid Customers), Discord, or email (support@dune.com) to remove the old namespace
Rejection & Missing Data Issues
My contract was rejected with no explanation. What happened?
My contract was rejected with no explanation. What happened?
- Duplicate submission: Contract is already decoded under another name
- Invalid ABI: ABI doesn’t match the deployed bytecode
- Wrong contract type: Submitted a library or abstract contract
I see the contract on Etherscan but functions/events are missing on Dune. Why?
I see the contract on Etherscan but functions/events are missing on Dune. Why?
❌ Hidden: Events/functions with zero onchain activity
❌ Hidden: View/pure functions (read-only, no on-chain traces)Most common cause: This often happens when a proxy contract’s implementation is upgraded. The new functions/events won’t appear until:
- They’re actually called onchain, AND
- The new ABI is submitted to Dune for decoding (requires manual approval, which can take some time)
- Find a transaction that calls the missing function/event
- Check if it appears in
ethereum.traces
orethereum.logs
raw tables
Bytecode Matching & Instance Detection
I enabled bytecode matching but other instances aren't appearing. How long should I wait?
I enabled bytecode matching but other instances aren't appearing. How long should I wait?
- Initial contract: Typically decodes within 24 hours
- Bytecode matching scan: Additional 24-48 hours
- Status remains “Pending”: This is normal during scanning
- All instances appear: Usually within 48-72 hours total
- Other contracts have 100% identical bytecode
- You enabled “bytecode matching” during submission
- Contracts aren’t variations (even slight differences prevent matching)
How do I know if bytecode matching actually found other instances?
How do I know if bytecode matching actually found other instances?
- Query the decoded tables for multiple contract addresses
- Can use dune.com/agent:
Complex Namespace Management
How do I ensure specific contracts fall under the right namespace when using bytecode matching?
How do I ensure specific contracts fall under the right namespace when using bytecode matching?
- Submit them separately
- Don’t enable bytecode matching
- Manually submit each address
- Submit the main contract with bytecode matching
- Create a view filtering only desired addresses:
- For upgradeable contracts (e.g., proxy pattern), submit only the proxy contract address with the current implementation’s ABI.
- Use the same project and contract names for consistency.
- When a new implementation is deployed, resubmit the proxy contract with the updated ABI and the same names (select ‘NO’ for several instances).
- Do not submit multiple versions as separate contracts; just update the ABI as needed via resubmission.
Multiple teams deployed our contracts. How do we organize the data?
Multiple teams deployed our contracts. How do we organize the data?
- Coordinate namespace ownership: Decide who “owns” the namespace
- Use project-specific namespaces: teamA_token vs teamB_token
- Create cross-project views: Combine data post-decoding
- Document deployment addresses: Maintain a registry of who deployed what
Performance & Query Optimization
How do I efficiently query factory contracts with thousands of instances?
How do I efficiently query factory contracts with thousands of instances?
- Before querying, determine which token pairs or contract instances matter to your analysis
- You can do this by:
- Looking them up on a block explorer or the project’s official documentation/site
- Querying Dune itself to find pairs involving a specific token of interest
- Use materialized views for common filters
- Partition by time when querying historical data
- Index on contract_address in downstream tables
My decoded tables are huge. How do I find specific contract instances?
My decoded tables are huge. How do I find specific contract instances?
- Use Dune’s search in Data Explorer with specific addresses
- Filter by deployment block for newer contracts
- Maintain an off-chain registry of your contract deployments
Special Cases & Edge Scenarios
How do I handle contracts deployed by CREATE2 with identical addresses across chains?
How do I handle contracts deployed by CREATE2 with identical addresses across chains?
- Submit once per chain (multichain decoding handles this automatically if criteria are met)
- Use consistent naming across all chains
- Note in submission: “CREATE2 deterministic deployment”
Submission-Related FAQs
I submitted the wrong ABI type (proxy instead of implementation). How do I fix this?
I submitted the wrong ABI type (proxy instead of implementation). How do I fix this?
How do I know if I should use bytecode matching vs factory pattern?
How do I know if I should use bytecode matching vs factory pattern?
- Use bytecode matching when: Multiple contracts have identical code but different deployers (e.g., token contracts deployed by different teams)
- Use factory pattern when: All contracts are created by the same factory contract (e.g., Uniswap pairs)
- Use both when: A factory creates contracts with identical bytecode
My contract has been upgraded multiple times. Should I submit all versions?
My contract has been upgraded multiple times. Should I submit all versions?
- Submit only the proxy contract address with the current implementation’s ABI
- Use the same project name and contract name for consistency
- When you have a new implementation that you want to decode, resubmit the contract with:
- Same proxy address
- Updated ABI from the new implementation
- Same project and contract names
- Select ‘NO’ for “several instances” option
Sometimes you need to resubmit a contract because the name is originally submitted wrong, or you need to update the ABI.When resubmitting:
- Go to the contract submission page
- Select the resubmission reason from the dropdown
- If your reason isn’t listed, provide detailed information about why you’re resubmitting to avoid rejection
- Dune handles upgradeable contracts by allowing ABI updates through resubmission
- The documentation notes: “some contracts are upgradeable (i.e., the smart contract code can be modified). In this case we may not have all of the ABIs. ABIs can be checked in the ABI column of the .contracts tables. A contract can always be resubmitted with missing ABIs so we can update our data.”
- You only need to submit the current/latest version that you want decoded
- Don’t submit multiple versions of the same contract as separate submissions
- Don’t submit implementation contract addresses directly (for proxy patterns)
Decoding Process FAQs
Why does my decoded table show data from other contracts I didn't submit?
Why does my decoded table show data from other contracts I didn't submit?
- Same bytecode (if bytecode matching enabled)
- Same factory deployer (if factory pattern enabled)
How long does decoding take for factory contracts with thousands of instances?
How long does decoding take for factory contracts with thousands of instances?
Query-Related FAQs
How do I identify which specific contract instance generated an event in factory-decoded tables?
How do I identify which specific contract instance generated an event in factory-decoded tables?
contract_address
column present in all decoded tables. This shows which specific instance (e.g., which Uniswap pair) generated each event.Why can't I find my multichain decoded tables?
Why can't I find my multichain decoded tables?
- Identical ABIs across chains
- Same project namespace and contract name
- Contracts submitted on multiple chains
Troubleshooting FAQs
I see similar contracts on Etherscan but bytecode matching isn't working. Why?
I see similar contracts on Etherscan but bytecode matching isn't working. Why?
- Solidity versions
- Optimizer settings
- Constructor parameters embedded in bytecode
Best Practices FAQs
Should I decode every contract in my protocol?
Should I decode every contract in my protocol?
✅ Contracts emitting analytical events
❌ Simple ownership or access control contracts
❌ Libraries (can’t be decoded directly)
When should I resubmit vs. submit a new contract?
When should I resubmit vs. submit a new contract?
- Different contract address
- New version with different address
- Different contract type in protocol
- Adding missed chains
- Updating ABI for the same contract
- Fixing naming errors
- Request contract deletion
- Submitting for another reason